﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Evan.Template
{
    /// <summary>
    /// 创建SiteMap
    /// </summary>
    public static class CreateSiteMap
    {

        private static string MakeUrlXml(string url)
        {
            string _node = "";
            _node += "<url>";
            _node += "    <loc>" + url + "</loc>";
            _node += "    <lastmod>" + DateTime.Now.ToString("yyyy-MM-dd") + "</lastmod>";
            _node += "    <changefreq>weekly</changefreq>";
            _node += "    <priority>0.8</priority>";
            _node += "</url>";
            return _node;
        }

        /// <summary>
        /// 入口 返回的结果证明是否生成成功
        /// </summary>
        /// <returns></returns>
        public static bool Create()
        {
            try
            {
                List<string> SiteUrl = new Evan.Template.Base().GetUrlList();
                StringBuilder sitemap = new StringBuilder();
                dynamic SiteConfig = Common.SysComm.GetSiteConfig();
                if (!string.IsNullOrEmpty(SiteConfig.WebUrl))
                {
                    sitemap.Append("<urlset>");
                    sitemap.Append("    <url>");
                    sitemap.Append("        <loc>" + SiteConfig.WebUrl.TrimEnd('/') + "/</loc>");
                    sitemap.Append("        <lastmod>" + DateTime.Now.ToString("yyyy-MM-dd") + "</lastmod>");
                    sitemap.Append("        <changefreq>weekly</changefreq>");
                    sitemap.Append("        <priority>1.0</priority>");
                    sitemap.Append("    </url>");
                    foreach (string item in SiteUrl)
                    {
                        sitemap.Append(MakeUrlXml(SiteConfig.WebUrl.TrimEnd('/') + item));
                    }
                    sitemap.Append("</urlset>");
                    //写文件
                    #region 如果SiteMap文件存在则删除源文件
                    if (Evan.Common.DirFile.FileExists("~/sitemap.xml"))
                    {
                        Evan.Common.DirFile.DeleteFile("~/sitemap.xml");
                    }
                    #endregion
                    Common.DirFile.SaveFile(sitemap.ToString(), "~/sitemap.xml");

                    return true;
                }
                else
                {
                    SystemLog.MemLog.AddExLog2("生成SiteMap失败", null, "没有填写系统管理中的网站域名");
                    return false;
                }

            }
            catch (Exception ex)
            {
                SystemLog.MemLog.AddExLog2("生成SiteMap失败", null, ex.ToString());
                return false;
            }
        }
    }
}
